1. Field of the Invention
The present invention relates to data communications between applications.
2. Description of Background Art
A distributed system may contain many applications, each performing some function needed by the overall system. For example, one application may be a digital interface to a video camera and another application may be control software on a robot arm. A distributed system may consist of one camera application sending data to three robot arm applications that use the data to determine when and how to move. In general, an application may be implemented in hardware or software or both and is capable of digital communication.
Often, a particular group of applications in a distributed system will need to communicate with each other. In the example above, the camera application is sending data while the robot arm applications are receiving it. This may be considered a communication channel which has one server application and three client applications. In many distributed systems, each application needs to know the location of the other applications and contain programming to connect to and communicate with the other applications. As the number of applications increases, each application must store more location information and must handle greater numbers of connections to other applications. Also, when the configuration of the network is modified, the applications may need to be modified to support the new configuration, for example to communicate using different protocols.
Communication between applications in a distributed system should be flexible and efficient. Often, communication systems require the registration of data types with a central broker and require the maintenance of these types. This limits the flexibility of applications by requiring broker-supported types and decreases the efficiency of the system by requiring type registration with a central broker.
What is needed is a channel-based, application-independent communication system for protocol-neutral data communications between applications in a distributed system.